home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / Anwender / Grafik / PPT / rexx / InvertAlpha.prx < prev    next >
Text File  |  1998-06-28  |  2KB  |  78 lines

  1. /*
  2.     This script takes the existing alpha channel of an image and
  3.     turns it to a negative of itself, i.e. where there is no alpha
  4.     channel, one is added and where there is already an alpha channel,
  5.     it is removed.
  6.  
  7.     Actually, each alpha channel value is replaced with 255-alpha.
  8.  
  9.     $Id:$
  10. */
  11.  
  12. /*-------------------------------------------------------------------*/
  13. /*  I suggest you use this header as-is and add your own code below  */
  14.  
  15. OPTIONS RESULTS
  16. SIGNAL ON ERROR
  17. IF ADDRESS() = REXX THEN DO
  18.     startedfromcli = 1
  19.     ADDRESS PPT
  20. END
  21. ELSE DO
  22.     startedfromcli = 0
  23.     ADDRESS PPT
  24. END
  25. RESULT = 'no result'
  26.  
  27. /*-------------------------------------------------------------------*/
  28. /* Add your code here */
  29.  
  30. PARSE ARG frame
  31. IF DATATYPE(frame) ~= NUM THEN DO
  32.     RC  = 10
  33.     RC2 = "No frame selected"
  34.     SIGNAL ERROR
  35. END
  36.  
  37. FRAMEINFO frame STEM inf
  38.  
  39. IF inf.colorspace ~= ARGB THEN DO
  40.    SHOWERROR '"You need an ARGB image for this effect"'
  41.    EXIT 10
  42. END
  43.  
  44. COPYFRAME frame
  45. newframe = RESULT
  46.  
  47. /*  Grab the alpha channel off the image into the RGB channels and make
  48.     it negative */
  49.  
  50. PROCESS newframe COLORMIX RED "0,0,0,100" GREEN "0,0,0,100" BLUE "0,0,0,100"
  51. PROCESS newframe NEGATIVE
  52.  
  53. /*  We remove the now obsolete alpha channel so that we can add it directly
  54.     to the image.  */
  55.  
  56. PROCESS newframe TRUECOLOR
  57. PROCESS frame ADDALPHA newframe
  58.  
  59. /*  And finally, cleanup */
  60.  
  61. DELETEFRAME newframe FORCE
  62.  
  63. EXIT 0
  64.  
  65. /*-------------------------------------------------------------------*/
  66. /* Again, keep this part intact. This is the error handler. */
  67. ERROR :
  68. returncode = RC
  69. IF startedfromcli = 1 THEN DO
  70.     SAY 'ERROR ' returncode ' on line ' SIGL ': ' RC2
  71.     PPT_TO_BACK
  72. END
  73. ELSE
  74.     SHOWERROR '"'RC2'"' SIGL
  75. EXIT returncode
  76.  
  77.  
  78.